using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;

namespace Avon
{
    /// <summary>
    /// TanacsadonoData
    /// </summary>
    public struct TanacsadonoData
    {
        int m_TanacsadonoID;
        string m_TanacsadonoNev;
        int m_TanacsadonoKoordonatorID;
        int m_TanacsadonoKampanyszam;
        string m_TanacsadonoCNP;
        string m_TanacsadonoCim;
        string m_TanacsadonoEmail;
        int m_TanacsadonoTelefonszam;
        string m_TanacsadonoKoordonatorNev;

        /// <summary>
        /// a tanacsadonoData konstruktora nevvel
        /// </summary>
        /// <param name="nev">a tanacsadono neve</param>

        public TanacsadonoData(String nev)
        {
            m_TanacsadonoID = 0 ;
            m_TanacsadonoNev = nev;

            m_TanacsadonoKoordonatorID = 0;
            m_TanacsadonoKampanyszam = 0;
            m_TanacsadonoCNP = "";
            m_TanacsadonoCim = "";
            m_TanacsadonoEmail = "";
            m_TanacsadonoTelefonszam = 0;
            m_TanacsadonoKoordonatorNev = "";
        }

        /// <summary>
        /// a tanacsadono konstruktora nevvel es id-val
        /// </summary>
        /// <param name="id">a tanacsadono id-ja</param>
        /// <param name="nev">a tanacsadono neve</param>

        public TanacsadonoData(int id, String nev)
        {
            m_TanacsadonoID = id;
            m_TanacsadonoNev = nev;

            m_TanacsadonoKoordonatorID = 0;
            m_TanacsadonoKampanyszam = 0;
            m_TanacsadonoCNP = "";
            m_TanacsadonoCim = "";
            m_TanacsadonoEmail = "";
            m_TanacsadonoTelefonszam = 0;
            m_TanacsadonoKoordonatorNev = "";
        }
        /// <summary>
        /// getterek es setterek
        /// </summary>
        public int TanacsadonoID
        {
            get { return m_TanacsadonoID; }
            set { m_TanacsadonoID = value; }
        }

        public string TanacsadonoNev
        {
            get { return m_TanacsadonoNev; }
            set { m_TanacsadonoNev = value; }
        }

        public int TanacsadonoKoordonatorID
        {
            get { return m_TanacsadonoKoordonatorID; }
            set { m_TanacsadonoKoordonatorID = value; }
        }

        public string TanacsadonoKoordonatorNev
        {
            get { return m_TanacsadonoKoordonatorNev; }
            set { m_TanacsadonoKoordonatorNev = value; }
        }

        public int TanacsadonoKampanyszam
        {
            get { return m_TanacsadonoKampanyszam; }
            set { m_TanacsadonoKampanyszam = value; }
        }

        public string TanacsadonoCNP
        {
            get { return m_TanacsadonoCNP; }
            set { m_TanacsadonoCNP = value; }
        }

        public string TanacsadonoCim
        {
            get { return m_TanacsadonoCim; }
            set { m_TanacsadonoCim = value; }
        }

        public string TanacsadonoEmail
        {
            get { return m_TanacsadonoEmail; }
            set { m_TanacsadonoEmail = value; }
        }

        public int TanacsadonoTelefonszam
        {
            get { return m_TanacsadonoTelefonszam; }
            set { m_TanacsadonoTelefonszam = value; }
        }
    }
    /// <summary>
    /// szarmaztatom a TanacsadonoDALt a DAL bol
    /// </summary>
        public class TanacsadonoDAL : DAL
        {
            /// <summary>
            /// Vissza teriti a Tanacsadonok listajat a koordonatoruk szerint
            /// </summary>
            /// <param name="KoordonatorID">a tanacsadono koordonatoranak idja</param>
            /// <returns>SQL paranacs segitsegevel vissza adja a Tanacsaodnok listajat koordonatorok szerint</returns>
            public List<TanacsadonoData> GetTanacsadonoList(int KoordonatorID)
            {
                String feltetel = "";
                if (KoordonatorID >= 0)
                {
                    feltetel = " AND Tanacsadono.KoordonatorID = " + KoordonatorID;
                }
                return UnivGetTanacsadonoList(feltetel);
            }
            /// <summary>
            /// vissza teriti a Tanacsadonok Listajata a nevuk szerint
            /// </summary>
            /// <param name="nev">a tanacsadono neve</param>
            /// <returns></returns>
            public List<TanacsadonoData> GetTanacsadonoList(String nev)
            {
                String feltetel = " AND Tanacsadono.Nev LIKE '" + nev + "%'";
                return UnivGetTanacsadonoList(feltetel);
            }
            /// <summary>
            /// letrehozza a Tanacsadonok Listajat a feltetel alapjan
            /// </summary>
            /// <param name="feltetel">a feltele ami alapjan teritse vissza a Tanacsadonok listajat, a fentiek alapjan</param>
            /// <returns>SQL parancs segitsegevel teriti vissza a tanacsadonok listajat</returns>
            public List<TanacsadonoData> UnivGetTanacsadonoList(String feltetel)
            {
                string query = "SELECT Tanacsadono.TanacsadonoID,Tanacsadono.Nev" +
                    ", Tanacsadono.KoordonatorID,Kampanyszam,Tanacsadono.CNP,Tanacsadono.Cim" +
                    ", Tanacsadono.Email,Tanacsadono.Telefonszam, Koordonator.Nev" +
                    " FROM Tanacsadono,Koordonator" +
                    " WHERE Tanacsadono.KoordonatorID = Koordonator.KoordonatorID";
                query += feltetel; 

                string error = string.Empty;

                SqlDataReader rdr = ExecuteReader(query, ref error);

                List<TanacsadonoData> TanacsadonoList = new List<TanacsadonoData>();

                if(error == "OK")
                {
                    while(rdr.Read()) 
                    {
                        TanacsadonoData item = new TanacsadonoData();
                        item.TanacsadonoID = Convert.ToInt32(rdr[0]);
                        item.TanacsadonoNev = rdr[1].ToString();
                        item.TanacsadonoKoordonatorID = Convert.ToInt32(rdr[2]);
                        item.TanacsadonoKampanyszam = Convert.ToInt32(rdr[3]);
                        item.TanacsadonoCNP = rdr[4].ToString();
                        item.TanacsadonoCim = rdr[5].ToString();
                        item.TanacsadonoEmail = rdr[6].ToString();
                        item.TanacsadonoTelefonszam = Convert.ToInt32(rdr[7]);
                        item.TanacsadonoKoordonatorNev = rdr[8].ToString();

                        TanacsadonoList.Add(item);
                    }
                }
                CloseDataReader(rdr);
                return TanacsadonoList;
            }

            /// <summary>
            /// kiszamitja a Tanacsadonok szamat
            /// </summary>
            /// <returns></returns>

            public int GetTanacsadonoNumber()
            {
                string query = "SELECT COUNT (*) FROM Tanacsadono", error = "";

                object value = ExecuteScalar(query, ref error);
                if (error == "OK")
                {
                    return Convert.ToInt32(value);
                }
                else
                {
                    return -1;
                }
            }

            /// <summary>
            /// ha modositani szeretnenk a Tanacsadonok listajat
            /// </summary>
            /// <param name="TanacsadonoId">a tanacsadono id-ja</param>
            /// <param name="Nev">a tanacsadono neve</param>
            /// <param name="KoordonatorId">a tanacsadono koordonatoranak id-ja</param>
            /// <param name="Kampanyszam">a tanacsadono eddig kampanyainak szama</param>
            /// <param name="CNP">a tanacsadono CNP je</param>
            /// <param name="Cim">a tanacsadon cime</param>
            /// <param name="Email">a tanacsadono email cime</param>
            /// <param name="Telefonszam">a tanacsadono telefonszama</param>
            /// <returns>a modosit SQL parancs eredmenyet adja vissza</returns>

            public string ModositTanacsadono(int TanacsadonoId,string Nev, int KoordonatorId, int Kampanyszam, string CNP, string Cim, string Email, string Telefonszam)
            {
                string query = "UPDATE Tanacsadono" +
                            " SET Nev = '" + Nev +
                            "', KoordonatorID = " + KoordonatorId +
                            ", Kampanyszam = " + Kampanyszam +
                            ", CNP = '" + CNP +
                            "', Cim = '" + Cim +
                            "', Email = '" + Email +
                            "', Telefonszam = '" + Telefonszam +
                            "' WHERE TanacsadonoID = " + TanacsadonoId;

                return ExecuteNonQuery(query);
            }

            /// <summary>
            /// ha beszurni szeretnenk szurni egy uj Tanacsadonot
            /// </summary>
            /// <param name="TanacsadonoId">a tanacsadono id-ja</param>
            /// <param name="Nev">a tanacsadono neve</param>
            /// <param name="KoordonatorId">a tanacsadono koordonatoranak id-ja</param>
            /// <param name="Kampanyszam">a tanacsadono eddig kampanyainak szama</param>
            /// <param name="CNP">a tanacsadono CNP je</param>
            /// <param name="Cim">a tanacsadon cime</param>
            /// <param name="Email">a tanacsadono email cime</param>
            /// <param name="Telefonszam">a tanacsadono telefonszama</param>
            /// <returns>a beszur SQL parancs eredmenyet adja vissza</returns>

            public string BeszurTanacsadono(string Nev, int KoordonatorId, int Kampanyszam, string CNP, string Cim, string Email, string Telefonszam)
            {
                string query = "INSERT INTO Tanacsadono(Nev,KoordonatorId,Kampanyszam,CNP,Cim,Email,Telefonszam)" +
                            " VALUES ('" + Nev + "','" + KoordonatorId + "','" + Kampanyszam + "'," + CNP + ",'" + Cim + "','" + Email + "','" + Telefonszam + "')";
                return ExecuteNonQuery(query);
            }

            /// <summary>
            /// ha torolni szeretnenk egy uj Tanacsadonot
            /// </summary>
            /// <param name="TanacsadonoID">a tanacsadono idja, akit torolni  </param>
            /// <returns>a torol SQL parancs eredmenyet adja vissza</returns>

            public string TanacsadonoTorol(int TanacsadonoID)
            {
                string query = "DELETE FROM Tanacsadono WHERE TanacsadonoId = " + TanacsadonoID;

                return ExecuteNonQuery(query);
            }
        }
}
